Field of the Invention
The present invention relates to real-time software deployment and, more particularly, to a technique for dynamically optimizing applications for a target system within a deployment server.
Description of the Related Art
The innovation of platform independent software languages, such as the JAVA programming language from Sun Microsystems of Santa Clara, Calif., represents a significant technological advance, which permits software to be written in a platform independent language, which we will call a Write Once, Run Anywhere (WORA) language. Platform independent languages can reduce software development time and system maintenance time since only one version of a software application needs to be developed and maintained, can alleviate many “lock-in” situations, and can generally allow Web deployment of applications to occur in a platform agnostic manner. Currently, however, optimizations are often needed and/or desired in system and application programs to improve performance and minimize the resources consumed by platform agnostic software. These optimizations can be particularly important in systems where memory and computing resources are at a premium, which is the situation for many mobile computing devices, pervasive computing systems, embedded computing systems, and the like. Illustrative resource conserving optimizations can include, for example, removing of unused classes from packages, performing ahead of time (AOT) compilations, removing or modifying code paths, optimizing memory usage in an application, and the like.
In certain situations, optimizations and device-specific customizations become more than just a luxury, providing a necessary precursor before generic software can operate upon a device. It should be appreciated that the types and purposes of devices in the world wide market are extremely fragmented and heterogeneous. That is, even if a software developer utilizes a WORA language to construct software, device specifics can often cause the resulting applications to run poorly or even malfunction. For example, even though a Personal Data Assistant (PDA) can execute JAVA code, memory or processor limitations of the PDA can result in runtime errors during code execution.
Rapid technological advances in hardware have intensified the problems inherent in a market of heterogeneous devices. Because of market pressure and rapid advances, the same manufacturer can support multiple configurations of equivalent devices or a device line, each having different memory and processor specifications. Even more problematic, different manufacturers for the same device type can utilize divergent technologies within approximately equivalent devices. As a result, device hardware and configuration differences within the commercial market can be relatively extreme, thereby negatively affecting the viability of platform independent software.
Drawbacks exist with existing solutions to implementing software within a heterogeneous device space. A rudimentary solution is to customize and optimize software on a per-device basis during the design stage of a software development lifecycle. This solution, however, can be expensive and largely defeats the gains achieved through WORA technologies. Further, as new devices are created, new versions and/or optimizations of the software for the new devices are required, which results in a continuous cost for supporting and maintaining a software application.
Another solution is to perform adaptive optimizations within a run-time compiler of an application. Such a solution can gather feedback information during application execution, can convey the feedback to the compiler, and can re-compile the code in accordance to the feedback. A drawback is that a significant amount of monitoring overhead is needed to operationally capture the feedback and to continuously recompile code. The level of overhead can exceed performance gains resulting from the solution. Further, resource-constrained devices often do not have enough allocable resources to execute the base code, let alone the additional overhead code required for adaptive optimizations of this base code within a client.
Still another solution to deploying code across a diverse base is to establish a client-server relationship, where a portion of execution occurs at a server. Different clients can be developed for different devices, each client being capable of operating within the resource constraints of its host device. Client-server systems can be further enhanced to include load balancing systems, content caching, parallel computations, redundant servers, and other networking techniques for smoothing out bottleneck and communication interruptions common within a client-server architecture. While this solution can alleviate some of the concerns with a resource-constrained device, it fails to address the underlying problems of a divergent device space. Further, the solution requires a relatively constant communication link between a client and server, which can be costly and/or disadvantageous in many situations. Moreover, a client-server solution can still require different clients for different devices to be constructed, where the construction of the different clients involves the aforementioned problems, which are not adequately addressed by existing technologies.
Yet another type of adaptive device solution addresses presentation and input problems through transcoding. For example, mobile devices often have smaller screens and different default input modes (such as speech recognized input or handwriting recognized input as opposed to keyboard input) from less constrained devices. Transcoding attempts to modify the input and output designed for one type of device to the characteristic of a different type of device so that, for example, Web pages designed for desktop browsers can be intelligibly presented within Web-enabled PDA devices. Transcoding solutions address input/output deltas among divergent devices and do not optimize code for a target platform, so as to minimize resource consumptions. Accordingly, transcoding is a complementary solution to that presented herein and does not otherwise relate to the present invention.